package tool

import (
	"bufio"
	"encoding/json"
	"os"
)

type Config struct{
	AppName string `json:"app_name"`
	AppMode string `json:"app_mode"`
	AppHost string `json:"app_host"`
	AppPort string `json:"app_port"`
	Sms  SmsConfig `json:"sms"`
	Database  DatabaseConfig `json:"database"`
	RedisConfig	 RedisConfig		`json:"redis_config"`
}
type SmsConfig struct {
	SignName string `json:"sign_name"`
	TemplateCode string `json:"template_code"`
	RegionId string `json:"region_id"`
	AppKey string `json:"app_key"`
	AppSecret string `json:"app_secret"`
}
type DatabaseConfig struct {
	Driver string `json:"driver"`
	Host string `json:"host"`
	Port string 	`json:"port"`
	User string `json:"user"`
	Password string `json:"password"`
	DbName string `json:"db_name"`
	Charset string `json:"charset"`
	ShowSql bool	`json:"show_sql"`
}

//redis配置
type RedisConfig struct {
	Addr 	string	`json:"addr"`
	Port	string	`json:"port"`
	Password string `json:"password"`
	Db	int		`json:"db"`
}


var _cfg *Config=nil

func GetConfig()*Config{
	return _cfg
}


func ParseConfig(path string)(*Config,error){
	file,err:=os.Open(path)
	if err!=nil{
		panic(err)
	}
	defer  file.Close()
	reader:=bufio.NewReader(file)
	decoer:=json.NewDecoder(reader)
	if err:=decoer.Decode(&_cfg);err!=nil{
		return nil,err
	}
	return _cfg,nil
}